package leetcode.hot100;

import java.util.Arrays;

@SuppressWarnings("all")
public class _4_寻找两个正序数组的中位数 {

    // nums1 = [1,3], nums2 = [2] ===》合并数组 = [1,2,3] ，中位数 2
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        // 合并数据并要求合并后的数组是有序的
        int[] numsAll = new int[nums1.length + nums2.length];
        System.arraycopy(nums1, 0, numsAll, 0, nums1.length);
        System.arraycopy(nums2, 0, numsAll, nums1.length, nums2.length);
        Arrays.sort(numsAll);
        // 合并后的数组长度如果是奇数，中位数就在中间，如果长度是偶数，中位数需要根据中间两位数计算
        int len = numsAll.length;
        if ((len & 1) == 1) return numsAll[len >> 1];
        else {
            int i = len >> 1;
            int j = i - 1;
            return (numsAll[i] + numsAll[j]) / 2.0;
        }
    }

}
